Java8——新特性篇 --Lambda表达式如何使用与应用场景分析

Java8 已经沦为很多公司的JDK版本了,所以学习Java8的新特性也是重中之重

Java8—Lambda表达式应用:

1.预热

lambda 使用 方式:
    1. 无参使用 ()-> System.out.println("sss") 
    2. 单个参数可以忽略小括号 a-> System.out.println(a.getId())
    3. 多参数多行数 
    (a,b)->{
                        ..... 有返回值的话:return 返回值。
                  }

2.四大函数式接口:

 1. Consumer<T> 消费接口 void accept(T t)
 2. Supplier<T> 供给型接口 T get() 
 3. Predicate<T> 断言型接口 boolean test(T t)
 4. Function<T,R>   函数型接口 R apply(T t)

3.函数式接口的使用方式:

/**
 *
 * @param <T>
 * @param <R>
 */
public abstract  class ExerciseLambda<T,R> {

    /**
     * 消费
     * @param consumer
     */
    public void acceptVoid(T user,Consumer<T> consumer){
        consumer.accept(user);
    }

    /**
     * 供给型接口
     * @param supplier
     * @return
     */
    public T returnEntity(Supplier<T> supplier){
        return supplier.get();
    }

    /**
     * 函数式接口
     * @param entity
     * @param function
     * @return
     */
    public R toolFunction(T entity,Function<T,R> function){
        return function.apply(entity);
    }

    /**
     * 判断
     * @param t
     * @param predicate
     * @return
     */
    public boolean confirm(T t, Predicate<T> predicate){
        return predicate.test(t);
    }
}
public class UserLambdaService extends ExerciseLambda<User,UserVo> {

}
public  class LambdaFactory{
    UserLambdaService lambdaService = new UserLambdaService();

    /**
     * 供给型接口 在参数上写方法。
     * @return
     */
    private User testSupplier(){
        return lambdaService.returnEntity(() -> {
            User tempUser = new User();
            tempUser.setId("110");
            return tempUser;
        });
    }
    /**
     * 消费测试
     */
    @Test
    public void testAccept(){
        User user = testSupplier();
        lambdaService.acceptVoid(user,user1 -> System.out.println(user.getId()));
    }

    /**
     *
     */
    public UserVo testFunction(){
        User user = testSupplier();
        return lambdaService.toolFunction(user,eo->{
            UserVo userVO = new UserVo();
            userVO.setId(eo.getId());
            return userVO;
        });
    }

    /**
     * 判断是否成立
     */
    @Test
    public void test(){
        User user = testSupplier();
        UserVo userVo = testFunction();
        if(lambdaService.confirm(user,userTemp -> userTemp.getId().equals(userVo.getId()))){
            System.out.println("成功了");
        }
    }

小结:
好处就是可以进行不定行数的插入实现的方法,来促使得到最终结果,使方法更加灵活,而不需要改已经定义好的方法,此处没有太多实例说明,但是参数传方法,已经说明了一切,也是一种解耦方式。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值